<?php namespace Admin\Controller; 
//分类默认控制器
class CateController extends CommonController{
	private $cateModel;
	//框架自定义构造方法
	public function __auto(){
		$this->cateModel = new \Common\Model\Cate;
	}
	
	//查-分类列表
	public function index(){
		
		//1.获取分类表中的所有信息
		$cateData=$this->cateModel
					->orderBy('cid','ASC')
					->get();
		//2.判断如果没有一个分类就先去添加
		if(!$cateData) View::success('无分类，请添加',U('addCate'));
		//3.变为树状结构
		$cateData=Data::tree($cateData,'cname');
		//4.分配变量
		View::with('cateData',$cateData);
		//5.载入分类列表界面
		View::make();
	}
	
	//删除分类
	public function del(){
		//1.获取要删除的分类cid
		$cid=Q('get.cid',0,'intval');
		//2.获取要删除的分类的pid		
		$pid=Db::table('category')->where("cid={$cid}")->pluck('pid');
		//3.把子类的pid换成父类的pid
		Db::table('category')->where("pid={$cid}")->update(array('pid'=>$pid));
		//4.删除该类型
		Db::table('category')->where('cid',"{$cid}")->delete();
		//5.删除成功后提示删除成功
		View::success("成功删除");
	}
	
	//编辑分类
	public function editCate(){
		//二.修改分类
			//1.判断是否有值post过来
			if(IS_POST){
				//修改成功就提示成功
				if($this->cateModel->editCate()) View::success('修改成功',U('index'));
				//修改失败就提示失败
				View::error($this->cateModel->getError());
			}
			
		//一.获取旧数据使其在编辑页面显示
			//1.获取要编辑的cid
			$cid=Q('get.cid',0,'intval');
			//2.查询要编辑的cid对应的所有数据		
			$oldData=$this->cateModel->where("cid={$cid}")->find();
			//3.分配旧数据变量
			View::with('oldData',$oldData);
			//4.处理“所属分类”，除了顶级分类
			$cateData=Data::tree($this->cateModel->getNoTop($cid),'cname');
			//5.分配“所属分类”变量
			View::with('cateData',$cateData);
		//载入编辑分类界面		
		View::make();
	}
	
	//添加分类-添加顶级分类
	public function addCate(){
		//1.判断是否有值post过来
		if(IS_POST){
			//有post传值过来就调用store方法 ,添加成功后提示成功
			if($this->cateModel->store()) View::success('添加成功',U('Cate/addCate'));
			//如果不成功就提示失败
			View::error($this->cateModel->getError());
		}
		//载入添加分类界面
		View::make();
	}
	
	//添加子类
	public function addSon(){
		//二。添加子类
			//1.判断是否有post传值过来
			if(IS_POST){
				//如果有就调用store方法，如果添加成功就提示添加成功
				if($this->cateModel->store()) View::success('添加成功');
				//如果添加不成功就提示错误
				View::error($this->cateModel->getError());
			}
		
		//一.处理所属类型
			$typeModel = new \Common\Model\Type;
			$typeData = $typeModel->get();
			View::with('typeData',$typeData);
			
		//载入添加子类界面
		View::make();
	}
}